// pages/confirm.js
const app = getApp();
const fetchSev = require("../../utils/util.js").fetchSev;
const submitUrl = require("../../config.js").submitUrl;
const getDefaultInfo = require('../../config.js').getDefaultInfo;
const getCustomerUrl = require('../../config.js').getCustomerUrl;

Page({

  /**
   * 页面的初始数据
   */
  data: {
    totalWeight: 0,        // 总重量
    totalNum: 0,    // 总数量
    checkedCartList: [],   // 选中的商品列表

    payTypeArr: [{
      id: 1, name: '在线支付',
    }, {
      id: 2, name: '转账汇款',
    }, {
      id: 3, name: '现货自提',
    }],
    pickerIndex: 0,
    customerList: [],  // 客户名称列表（用picker选择客户名称）
    customerIndex: 0,
    company: '',       // 客户名称(手输客户名称)
    company_id: '',    // 下拉选择客户名称的id

    
    pickerStr: '在线支付',  // 支付方式
    payType: '1',          // 支付方式

    billShow: false,  // 是否显示发票
    hasDefaultAddress: false,  // 默认没有地址信息
    hasDefaultBill: false,     // 默认没有默认发票信息
    hasCustomerList: false,    // 默认客户名称列表为空

    defaultAddress: {},
    defaultBill: {},

    
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
  
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    console.log('页面刷新');
    app.globalData.comeFromOrderPage = false;
    // 刷新数据
    this.setData({ totalWeight: app.globalData.totalWeight });
    this.setData({ totalNum: app.globalData.totalNum });    
    this.setData({ checkedCartList: app.globalData.checkedCartList });
    this.setData({ pickerIndex: 0});

    console.log(this.data.checkedCartList);

    // 获取默认地址和发票
    fetchSev(getDefaultInfo, 'GET', {}, (res)=>{
      console.log('默认地址和发票', res);
      if (res.address && res.address.length>0) {
        this.setData({defaultAddress: res.address[0]});
        this.setData({ hasDefaultAddress: true});
      } else {
        this.setData({ defaultAddress: {} });
        this.setData({ hasDefaultAddress: false });
      }

      if (res.invoice && res.invoice.length>0) {
        this.setData({defaultBill: res.invoice[0]});
        this.setData({ hasDefaultBill: true});
      } else {
        this.setData({ defaultBill: {} });
        this.setData({ hasDefaultBill: false });
      }
    });

    // 获取客户名称列表
    fetchSev(getCustomerUrl, 'GET', {}, (res)=>{
      console.log('客户名称列表', res);
      const cusArr = res || [];
      if (cusArr.length == 0) {
        // 客户列表为空
        this.setData({ hasCustomerList: false});
      } else {
        // 有客户列表时
        this.setData({ hasCustomerList: true });
        this.setData({ customerList: cusArr});
        this.setData({ company: cusArr[0].name });
        this.setData({ company_id: cusArr[0].id });
        
      }
    });
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {
  
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
  
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
  
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
  
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {
  
  },

  _formSubmit: function(e) {
    console.log(e)
  },
  // 1 - 提交订单
  _submit: function(e) {
    console.log('e', e);
    const data = {
      "products": this.data.checkedCartList,
      "pay_type": this.data.payType,
      "address": this.data.defaultAddress.id,
      // "consignee": this.data.defaultAddress.receiver || '',
      // "tel": this.data.defaultAddress.phone || '',
      "invoice_title": this.data.defaultBill.invoice_title || '',
      "duty_paragraph": this.data.defaultBill.duty_paragraph || '',

      // "customer_name": this.data.company,
      "customer_id": this.data.company_id,  // 下拉选择客户名称时的id
      "company": this.data.company,
      "image": this.data.checkedCartList[0].image,
      "form_id": e.detail.formId  // 用于模板消息的formId
    };
    console.log('提交', data);
    // 数据校验
    if (data.products.length == 0) {
      wx.showToast({
        title: '订单为空',
        icon: 'none'
      });
      return;
    }
    if (data.pay_type == '') {
      wx.showToast({
        title: '请选择支付配送方式',
        icon: 'none'
      });
      return;
    }
    // 客户名称不能为空
    if (data.company == '') {
      wx.showToast({
        title: '请输入公司名称',
        icon: 'none'
      });
      return;
    }
    if (!data.address) {
      wx.showToast({
        title: '请选择地址',
        icon: 'none'
      })
      return;
    }
    fetchSev(submitUrl, "POST", data, function(res){
      console.log(res);
      // 重置全局数据
      app.globalData.totalWeight = 0;
      app.globalData.totalNum = 0;
      app.globalData.checkedCartList = [];

      // 成功后跳转到首页
      wx.showToast({
        title: '提交成功',
        icon: 'none',
        duration: 1500,
        complete: function(){
          wx.navigateTo({
            url: '../success/success',
          });
        }
      });      
    })
  },

  // 2-发票显示与隐藏
  _toggleBill: function() {
    const flag = this.data.billShow;
    flag ? this.setData({billShow: false}) : this.setData({billShow: true});
  },

  // 3-获取公司名称
  _companyInput: function(e) {
    this.setData({company: e.detail.value});
  },

  // 4 - 支付配送picker
  _pickerChange: function (e) {
    console.log(e);
    const idx = e.detail.value;
    if (idx == 0) {      
      this.setData({ pickerStr: '在线支付'});
      this.setData({ payType: 1 });
    } else if (idx == 1) {
      this.setData({ pickerStr: '转账汇款' });
      this.setData({ payType: 2 });
    } else if (idx == 2) {
      this.setData({ pickerStr: '现货自提' });
      this.setData({ payType: 3 });
    }
    this.setData({ pickerIndex: idx });    
  },

  // 5 - 客户名称picker
  _pickerCusChange: function(e) {
    console.log('客户名称picker', e);
    const idx = e.detail.value;
    const cusArr = this.data.customerList;
    this.setData({ company: cusArr[idx].name });
    this.setData({ company_id: cusArr[idx].id });
  },


  // 6 - 跳转选择默认地址
  _skipToAddressPage: function() {
    // 进入地址列表页面
    app.globalData.comeFromOrderPage = true;
    wx.navigateTo({
      url: '../address/address',
    })
  },

  // 7 - 跳转选择默认发票
  _skipToBillPage: function() {
    // 进入地址列表页面
    app.globalData.comeFromOrderPage = true;
    wx.navigateTo({
      url: '../bill/bill',
    })
  },
})